using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Configuration;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;

public partial class Stock_FormularioMovimientosStock : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {        
        tb_fechaInicial.Focus();
        if (!Page.IsPostBack)
        {
            btnTodos();
            tb_fecha.Focus();
        }
    }
    protected void imgbtnGuardar_Click(object sender, ImageClickEventArgs e)
    {
        imgbtnCancelar_Click(sender, e);
    }
    protected void imgbtnNuevo_Click(object sender, ImageClickEventArgs e)
    {
        calenCobro.Visible = true;
        cancelar1.Visible = false;
        imgbtnBuscar.Visible = false;
        ddl_motivo.Visible = true;
        ddl_motivo.Enabled = true;
        ddl_todos.Visible = false;
        tb_cantidad.Enabled = true;
        tb_producto.Enabled = false;
        tb_fecha.Enabled = true;
        filaFechaPri.Visible = true;
        filaFechafin.Visible = false;
        filaFechaIni.Visible = false;
        filaAutorizador.Visible = true;
        imgbtnCancelar.Visible = true;
        //imgbtnGuardar.Visible = true;
        imgbtnModificar.Visible = false;
        imgbtnNuevo.Visible = false;
        imgbtn_addProducto.Visible = true;
        imgbtn_addCabezeraDetalle.Visible = true;
        fs_cabezeras.Visible = false;
        fs_detalles.Visible = true;
        tb_fecha.Focus();

    }
    protected void imgbtnModificar_Click(object sender, ImageClickEventArgs e)
    {
        
              FormularioMovimientoStock.modificarDetalle(Convert.ToInt32(lbId.Text),int.Parse(tb_cantidad.Text),int.Parse(codProductoAux.Text));
              
              cargarGrillaDetalles();
              imgbtnCancelar.Visible = false;
              imgbtnModificar.Visible = false;
              imgbtnNuevo.Visible = true;                                         
    }
    protected void imgbtnCancelar_Click(object sender, ImageClickEventArgs e)
    {
        filaFechaIni.Visible = true;
        filaFechafin.Visible = true;
        filaFechaPri.Visible = false;

        ddl_motivo.Visible = false;
        ddl_todos.Visible = true;
      
        tb_cantidad.Enabled = false;
        tb_producto.Enabled = false;
        tb_fecha.Enabled = false;

        tb_fecha.Text = "";
        tb_fechaInicial.Text = "";
        tb_fechaFinal.Text = "";
        tb_cantidad.Text = "";
        tb_producto.Text = "";

        cancelar1.Visible = true;
        calenCobro.Visible = false;
        imgbtnCancelar.Visible = false;
        imgbtnGuardar.Visible = false;
        imgbtnNuevo.Visible = true;
        imgbtn_addCabezeraDetalle.Visible = false;
        imgbtn_addProductos.Visible = false;
        imgbtnModificar.Visible = false;
        fs_cabezeras.Visible = false;
        fs_detalles.Visible = true;

        lbCantidad.Visible = false;
        lbFecha.Visible = false;
        lbCantidad.Visible = false;
        gvMarca.Visible = false;
        imgbtnBuscar.Visible = true;
        imgProducto.ImageUrl = "";
        btnTodos();
    }


    protected void btAceptarEliminar_Click(object sender, EventArgs e)
    {        
    }

    protected void gvMonedas_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        gvMarca.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gvMarca.SelectedRow;
        string cantidad = row.Cells[1].Text;
        string nombre = row.Cells[2].Text;
        string cod_producto = row.Cells[3].Text;
        

        lbCantidadBorrada.Text = cantidad.ToString();
        lbProductoBorrado.Text = nombre.ToString();
        codProductoAux.Text = cod_producto;

        int idMarca = Convert.ToInt32(gvMarca.SelectedDataKey.Value);
        lbId.Text = idMarca + "";

        if (e.CommandName == "editar")
        {
            tb_producto.Text = nombre;
            tb_cantidad.Text = cantidad.ToString();
            imgbtnNuevo.Visible = false;
            imgbtn_addProductos.Visible = false;
            imgbtnGuardar.Visible = false;
            imgbtnModificar.Visible = true;
            imgbtnCancelar.Visible = true;
        }
        if (e.CommandName == "borrar")
        {
            mpeEliminarMoneda.Show();
            imgbtnModificar.Visible = false;
            imgbtnCancelar.Visible = false;
            imgbtnGuardar.Visible = false;
            imgbtnNuevo.Visible = true;         
        }
    }

    protected void txtBuscar_TextChanged(object sender, EventArgs e)
    {

    }
    protected void imgbtnBuscar_Click(object sender, ImageClickEventArgs e)
    {
        string descripcion = (ddl_todos.SelectedValue.ToString());
        if (descripcion == "Todos") { btnTodos(); return; }

        if (!string.IsNullOrEmpty(tb_fechaInicial.Text) && !Validar.validarFecha(tb_fechaInicial.Text)) {            
             lbFechaInicial.Visible = true; return; 
        }



        if (!string.IsNullOrEmpty(tb_fechaFinal.Text) && !Validar.validarFecha(tb_fechaFinal.Text)){
             lbFechaFinal.Visible = true; return; 
        }
        lbFechaInicial.Visible = false;
        lbFechaFinal.Visible = false;

        SqlConnection conexion = null;
        try
        {
            conexion = Conexion.CrearConexion();
            IDbCommand comando = Conexion.CrearComando(conexion);
            comando.CommandText = "SELECT Motivos.descripcion, Formulario_Movimiento_Stock.cod_motivo,Formulario_Movimiento_Stock.Fecha,Formulario_Movimiento_Stock.cod_transferencia " +
                " AS cod_transferencia, Motivos.cod_motivo,Fecha FROM " + 
                "Formulario_Movimiento_Stock INNER JOIN"+
                " Motivos ON Formulario_Movimiento_Stock.cod_motivo = Motivos.cod_motivo " +
                " where (Motivos.descripcion=(@descripcion))";
            comando.Parameters.Add(Conexion.CrearParametro("@descripcion", descripcion));

            IDataReader resultado = comando.ExecuteReader();

            gvCabezeras.DataSource = resultado;
            gvCabezeras.Visible = true;
            fs_cabezeras.Visible = true;
            gvDetallesBuscados.Visible = false;
            fs_detalles.Visible = false;
            gvCabezeras.DataBind();
        }
        finally
        {
            conexion.Dispose();
        }


    }
    //-----------------Grid de cabezeras---------------------
    protected void gvCabezerasOnRow(object sender, GridViewCommandEventArgs e)
    {
        gvCabezeras.SelectedIndex = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gv_productos.SelectedRow;
        int idCabeza = Convert.ToInt32(gvCabezeras.SelectedDataKey.Value);

        if (e.CommandName == "Seleccionar")
        {
            cargarGvDetallesBuscados(idCabeza);
            gvDetallesBuscados.Visible = true;
            fs_detallesBuscados.Visible = true;
            Cabezera.Visible = false;

        }
    
    }
    //----------Carga el GVDetallles Seleccionado----------------
    protected void cargarGvDetallesBuscados(int cod_transferencia)
    {
        SqlConnection conexion = null;
        try
        {
            conexion = Conexion.CrearConexion();
            IDbCommand comando = Conexion.CrearComando(conexion);
            comando.CommandText = "SELECT Detalles_Formulario_Movimiento_Stock.cod_transferencia, Formulario_Movimiento_Stock.cod_transferencia AS Expr1,Detalles_Formulario_Movimiento_Stock.cantidad, Detalles_Formulario_Movimiento_Stock.cod_producto, Productos.nombre,Productos.cod_producto AS Expr2 FROM         Detalles_Formulario_Movimiento_Stock INNER JOIN Formulario_Movimiento_Stock ON Detalles_Formulario_Movimiento_Stock.cod_transferencia = Formulario_Movimiento_Stock.cod_transferencia INNER JOIN Productos ON Detalles_Formulario_Movimiento_Stock.cod_producto = Productos.cod_producto WHERE     (Formulario_Movimiento_Stock.cod_transferencia = @cod_transferencia)";
            comando.Parameters.Add(Conexion.CrearParametro("@cod_transferencia", cod_transferencia));

            IDataReader resultado = comando.ExecuteReader();

            gvDetallesBuscados.DataSource = resultado;
            gvDetallesBuscados.Visible = true;
            fs_cabezeras.Visible = true;
            fs_detalles.Visible = false;
            gvDetallesBuscados.DataBind();
        }
        finally
        {
            conexion.Dispose();
        }
    }
    protected void gvDetallesOnRow(object sender, GridViewCommandEventArgs e)
    {
     
    
    }

    //-----------------Cargar la grilla de detalles actual
    protected void cargarGrillaDetalles() {
        SqlConnection conexion = null;
        try
        {
            conexion = Conexion.CrearConexion();
            IDbCommand comando = Conexion.CrearComando(conexion);

            comando.CommandType = System.Data.CommandType.StoredProcedure;
            comando.CommandText = "[sp_buscar_detalle_formulario_movimiento_stock]";
            IDataReader resultado = comando.ExecuteReader();

            gvMarca.DataSource = resultado;
            gvMarca.DataBind();
        }
        finally
        {
            conexion.Dispose();
        }    
    }


    protected void imgbtn_addProductos_Click(object sender, ImageClickEventArgs e)
    {
        int bandera = 0;
        if (string.IsNullOrEmpty(tb_cantidad.Text))
        {
            lbCantidad.Visible = true;
            bandera++;
        }
        else { lbCantidad.Visible = false; }
        if (string.IsNullOrEmpty(tb_producto.Text))
        {
            lbProducto.Visible = true;
            bandera++;
        }
        else { lbProducto.Visible = false; }


        if (bandera != 0) return;
        Page.Validate("obligatorio2");
        if (Page.IsValid)
        {
            imgbtnGuardar.Visible = false;
            imgbtnCancelar.Visible = false;
            imgbtnNuevo.Visible = false;
            FormularioMovimientoStock.agregarDetalleMovimientoStock(0, int.Parse(tb_cantidad.Text), int.Parse(codProductoAux.Text));
            Auditoria.guardarEvento(Session["usuario"].ToString(), tb_cantidad.Text, "-", "-", "Movimientos", "Cantidad");
            Auditoria.guardarEvento(Session["usuario"].ToString(), tb_producto.Text, "-", "-", "Movimientos", "Producto");
        }
        cargarGrillaDetalles();

        tb_cantidad.Text = "";
        tb_producto.Text = "";
        imgbtnCancelar.Visible = true;
        imgbtnGuardar.Visible = true;


    }
    protected void imgbtn_addProducto_Click(object sender, ImageClickEventArgs e)
    {
        mpeProductos.Show();
    }
    protected void gvProductos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        gv_productos.SelectedIndex = Convert.ToInt32(e.CommandArgument);


        GridViewRow row = gv_productos.SelectedRow;
        string marca = row.Cells[2].Text;
        string modelo = row.Cells[4].Text;
        string imagenPath = row.Cells[10].Text;

        lb_imagenPath.Text = imagenPath;
        imgProducto.ImageUrl = lb_imagenPath.Text;

        int idProducto = Convert.ToInt32(gv_productos.SelectedDataKey.Value);
        codProductoAux.Text = idProducto.ToString();


        if (e.CommandName == "seleccionarProducto")
        {
            tb_producto.Text = marca + " " + modelo;
            //tb_marca.Text = marca; 
            //lb_validarMarca.Visible = false; 
            mpeProductos.Hide();
        }
    }
    protected void imgbtn_addCabezera_Click(object sender, ImageClickEventArgs e)
    {
        int bandera = 0;
        if (string.IsNullOrEmpty(tb_fecha.Text))
        {
            lbFecha.Visible = true;
            bandera++;
        }
        else { lbFecha.Visible = false; }
        if (string.IsNullOrEmpty(tb_cantidad.Text))
        {
            lbCantidad.Visible = true;
            bandera++;
        }
        else { lbCantidad.Visible = false; }
        if (string.IsNullOrEmpty(tb_producto.Text))
        {
            lbProducto.Visible = true;
            bandera++;
        }
        else { lbProducto.Visible = false; }        


        if (bandera != 0) return;

        DateTime fecha = DateTime.Parse(tb_fecha.Text.ToString());

        FormularioMovimientoStock.agregarMovimientoStock(int.Parse(ddl_motivo.SelectedValue), 1, fecha);
        Auditoria.guardarEvento(Session["usuario"].ToString(), ddl_motivo.SelectedValue.ToString(), "-", "-", "Movimientos", "Motivo");
        Auditoria.guardarEvento(Session["usuario"].ToString(), fecha.ToString(), "-", "-", "Movimientos", "Fecha");
        Auditoria.guardarEvento(Session["usuario"].ToString(), Session["usuario"].ToString(), "-", "-", "Movimientos", "Autorizador");

        FormularioMovimientoStock.agregarDetalleMovimientoStock(0, int.Parse(tb_cantidad.Text), int.Parse(codProductoAux.Text));
        Auditoria.guardarEvento(Session["usuario"].ToString(), tb_cantidad.Text, "-", "-", "Movimientos", "Cantidad");
        Auditoria.guardarEvento(Session["usuario"].ToString(), tb_producto.Text, "-", "-", "Movimientos", "Producto");

        cargarGrillaDetalles();
 
        tb_cantidad.Text = "";
        tb_producto.Text = "";

        imgbtn_addCabezeraDetalle.Visible = false;
        imgbtnCancelarCabezeras.Visible = true;
        imgbtn_addProductos.Visible = true;
        imgbtnGuardar.Visible = true;
        tb_fecha.Enabled = false;
        ddl_motivo.Enabled = false;        
    }

    protected void btnTodos()
    {
        SqlConnection conexion = null;
        try
        {
            conexion = Conexion.CrearConexion();
            IDbCommand comando = Conexion.CrearComando(conexion);
            comando.CommandText = "SELECT Motivos.descripcion, Formulario_Movimiento_Stock.cod_motivo,Formulario_Movimiento_Stock.Fecha,Formulario_Movimiento_Stock.cod_transferencia " +
                " AS cod_transferencia, Motivos.cod_motivo,Fecha FROM " +
                "Formulario_Movimiento_Stock INNER JOIN" +
                " Motivos ON Formulario_Movimiento_Stock.cod_motivo = Motivos.cod_motivo ";
            IDataReader resultado = comando.ExecuteReader();
            gvCabezeras.DataSource = resultado;
            gvCabezeras.Visible = true;
            fs_cabezeras.Visible = true;
            fs_detalles.Visible = false;
            gvCabezeras.DataBind();
        }
        finally
        {
            conexion.Dispose();
        }

    }
    protected void gvMarca_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    protected void imgbtnCancelarCabezeras_Click(object sender, ImageClickEventArgs e)
    {
        Cabezera.Visible = true;
        fs_detallesBuscados.Visible = false;
        fs_detalles.Visible = false;
        fs_cabezeras.Visible = true;
    }
    
    protected void btAceptarEliminar_Click(object sender, ImageClickEventArgs e)
    {
        FormularioMovimientoStock.borrarDetalle(Convert.ToInt32(lbId.Text));
        Auditoria.guardarEvento(Session["usuario"].ToString(), "-", lbCantidadBorrada.Text, "-", "Movimientos", "Cantidad");
        Auditoria.guardarEvento(Session["usuario"].ToString(), "-", lbProductoBorrado.Text, "-", "Movimientos", "Producto");
        gvMarca.DataBind();
        mpeEliminarMoneda.Hide();
        SqlConnection conexion = null;
        try
        {
            conexion = Conexion.CrearConexion();
            IDbCommand comando = Conexion.CrearComando(conexion);

            comando.CommandType = System.Data.CommandType.StoredProcedure;
            comando.CommandText = "[sp_buscar_detalle_formulario_movimiento_stock]";
            IDataReader resultado = comando.ExecuteReader();

            gvMarca.DataSource = resultado;
            gvMarca.DataBind();
        }
        finally
        {
            conexion.Dispose();
        }
        tb_cantidad.Text = "";
        tb_producto.Text = "";
    
    }
    protected void btCancelarEliminar_Click(object sender, ImageClickEventArgs e)
    {
        mpeEliminarMoneda.Hide();
       // imgbtnCancelar_Click(sender, e);
    }
}
